package br.com.vti.sisp_sicrim.antigo.controller.relatorios;

import java.io.FileNotFoundException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.Relatorios;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela
 * Scrp1540Report
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Scrp1540Report {
	private String nomeclasse;
	private String jnomecadastrado;
	private int jmatriculacadastrado;
	private String jseunivel;
	private int jdatas;
	private int datacorrente;
	private int jhora;
	private String jnomecadastrou;
	private int jmatriculacadastrou;
	private String nropagina;
	private String horacorrente;
	private Result result;
	private Sessao sessao;
	private Relatorios report;
	// Classes views
	SicSenha senhaView = new SicSenha(); // Classes includes

	public Scrp1540Report() throws JRException, ParseException {
		inicializar();
	}

	public Scrp1540Report(Sessao sessao) throws JRException, ParseException {
		this.sessao = sessao;
		inicializar();
	}

	public void inicializar() throws JRException, ParseException {
		report = new Relatorios();
		jnomecadastrado = "";
		jmatriculacadastrado = 0;
		jseunivel = "";
		jdatas = 0;
		datacorrente = 0;
		jhora = 0;
		jnomecadastrou = "";
		jmatriculacadastrou = 0;
		nomeclasse = this.getClass().getSimpleName(); // *PROGRAM
		horacorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar
				.getInstance().getTime()); // *TIMX
		report.setNumeroRel(1, "C");
		{
			report.setNumeroLinhaRel(1, 3);
			{
				report.adicionaCampo(1, 60, "lit_1_60", "C", "",
						"GERENCIA DA JUSTICA, SEGURANCA PUBLICA E CIDADANIA - GEJUSPC");
				report.adicionaCampo(97, 6, "lit_97_6", "C", "", "DATA..");
				report.adicionaCampo(104, 8, "datacorrente", "N", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(2, 3);
			{
				report.adicionaCampo(1, 56, "lit_1_56", "C", "",
						"SUBGERENCIA DE TECNOLOGIA DA INFORMACAO            - STI");
				report.adicionaCampo(99, 6, "lit_99_6", "C", "", "HORA..");
				report.adicionaCampo(106, 8, "horacorrente", "S", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(3, 3);
			{
				report.adicionaCampo(1, 33, "lit_1_33", "C", "",
						"SISTEMA DE IDENTIFICACAO CRIMINAL");
				report.adicionaCampo(99, 8, "lit_99_8", "C", "", "PAGINA. ");
				report.adicionaCampo(108, 5, "nropagina", "S", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(5, 1);
			{
				report.adicionaCampo(30, 42, "lit_30_42", "C", "",
						"RELACAO DE USUARIOS CADASTRADOS NO SISTEMA");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(7, 7);
			{
				report.adicionaCampo(2, 25, "lit_2_25", "C", "",
						"NOME DO USUARIO");
				report.adicionaCampo(30, 9, "lit_30_9", "C", "", "MATRICULA");
				report.adicionaCampo(40, 12, "lit_40_12", "C", "",
						"NIVEL/ACESSO");
				report.adicionaCampo(60, 15, "lit_60_15", "C", "",
						"CADASTRADO/EM :");
				report.adicionaCampo(80, 8, "lit_80_8", "C", "", "HORARIO");
				report.adicionaCampo(90, 25, "lit_90_25", "C", "",
						"CADASTRADO POR :");
				report.adicionaCampo(120, 9, "lit_125_9", "C", "",
						"MATRICULA QUEM/CADASTROU");

				report.setFimLinhaRel();
			}
		}

		report.setNumeroRel(2, "D");
		{
			report.setNumeroLinhaRel(1, 7);
			{
				report.adicionaCampo(2, 25, "jnomecadastrado", "X", "", "");
				report.adicionaCampo(30, 9, "jmatriculacadastrado", "N", "", "");
				report.adicionaCampo(40, 12, "jseunivel", "N", "", "");
				report.adicionaCampo(60, 15, "jdatas", "N", "99/99/9999", "");
				report.adicionaCampo(80, 8, "jhora", "N", "99:99:99", "");
				report.adicionaCampo(90, 25, "jnomecadastrou", "X", "", "");
				report.adicionaCampo(120, 9, "jmatriculacadastrou", "N", "", "");

				report.setFimLinhaRel();
			}
		}

		setNomeClasse(nomeclasse);
		setHoracorrente(horacorrente);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		return true;
	}

	public String getJnomecadastrado() {
		return jnomecadastrado;
	}

	public void setJnomecadastrado(String jNomeCadastrado)
			throws ParseException {
		this.jnomecadastrado = jNomeCadastrado;
		report.adicionaValorReport("jnomecadastrado", jNomeCadastrado);
	}

	public int getJmatriculacadastrado() {
		return jmatriculacadastrado;
	}

	public void setJmatriculacadastrado(int jMatriculaCadastrado)
			throws ParseException {
		this.jmatriculacadastrado = jMatriculaCadastrado;
		report.adicionaValorReport("jmatriculacadastrado", jMatriculaCadastrado);
	}

	public String getJseunivel() {
		return jseunivel;
	}

	public void setJseunivel(String jSeuNivel) throws ParseException {
		this.jseunivel = jSeuNivel;
		report.adicionaValorReport("jseunivel", jSeuNivel);
	}

	public int getJdatas() {
		return jdatas;
	}

	public void setJdatas(int jDatas) throws ParseException {
		this.jdatas = jDatas;
		report.adicionaValorReport("jdatas", jDatas);
	}

	public int getDatacorrente() {
		return datacorrente;
	}

	public void setDatacorrente(int dataCorrente) throws ParseException {
		this.datacorrente = dataCorrente;
		report.adicionaValorReport("datacorrente", dataCorrente);
	}

	public int getJhora() {
		return jhora;
	}

	public void setJhora(int jHora) throws ParseException {
		this.jhora = jHora;
		report.adicionaValorReport("jhora", jHora);
	}

	public String getJnomecadastrou() {
		return jnomecadastrou;
	}

	public void setJnomecadastrou(String jNomeCadastrou) throws ParseException {
		this.jnomecadastrou = jNomeCadastrou;
		report.adicionaValorReport("jnomecadastrou", jNomeCadastrou);
	}

	public int getJmatriculacadastrou() {
		return jmatriculacadastrou;
	}

	public void setJmatriculacadastrou(int jMatriculaCadastrou)
			throws ParseException {
		this.jmatriculacadastrou = jMatriculaCadastrou;
		report.adicionaValorReport("jmatriculacadastrou", jMatriculaCadastrou);
	}

	public String getNomeclasse() {
		return nomeclasse;
	}

	public void setNomeClasse(String nomeClasse) throws ParseException {
		this.nomeclasse = nomeClasse;
		report.adicionaValorReport("nomeclasse", nomeClasse);
	}

	public String getHoracorrente() {
		return horacorrente;
	}

	public void setHoracorrente(String horaCorrente) throws ParseException {
		this.horacorrente = horaCorrente;
		report.adicionaValorReport("horacorrente", horaCorrente);
	}

	public void setPageSize(int pagesize) throws JRException {
		report.setPageSize(pagesize);
	}

	public void setLineSize(int linesize) {
		report.setLineSize(linesize);
	}

	public int getPageSize() {
		return report.getPageSize();
	}

	public int getPageLine() {
		return report.getPageLine();
	}

	public void saltaLinhas(int qtdLinhas) throws ParseException, JRException {
		report.saltaLinhas(qtdLinhas);
	}

	public void gravaRelatorio(int nroRel) throws ParseException, JRException {
		setNropagina(String.valueOf(report.getPageNumber()));
		report.gravaRelatorio(report, nroRel, false);
	}

	public InputStreamDownload imprimir() throws FileNotFoundException,
			JRException {
		return report.imprimir();
	}

	public String getNropagina() {
		return nropagina;
	}

	public void setNropagina(String nroPagina) throws ParseException {
		this.nropagina = nroPagina;
		report.adicionaValorReport("nropagina", nroPagina);
	}
}
